/**************************************** 
* Nodo.h
* Declaraci�n de la Clase Nodo
****************************************/
#ifndef __NODO_H__
#define __NODO_H__

template<class T> 
class NodoLista {

    private:
        
        T* dato;                
        NodoLista<T>* siguiente; 

    public:
        /*
         * pre : -
         * post: Constructor. 
		 *		Inicializa el nodo con el dato pasado por parametro y sin siguiente.
         */
        NodoLista(T* dato) {
            this->setDato(dato);
            this->setSiguiente(NULL);
		}

 		/*
         * pre : -
         * post: Destructor. Libera los recursos asociados al nodo.
         * 
         */
        virtual ~NodoLista() {
            delete dato;
        }    

        /*
         * pre : -
         * post: Setea el valor del dato.
         * 
         */
        void setDato(T* dato) {
            this->dato = dato;
        }

		/*
		 * pre : -
         * post: Setea el siguiente nodo.
         */
        void setSiguiente(NodoLista<T>* nodo) {
            this->siguiente = nodo;
        }
    
        /*
         * pre : -
         * post: devuelve el valor del dato.
         */
        T* getDato() {
            return this->dato;
        }
    
        /*
         * pre : -
         * post: devuelve el valor del siguiente.
         */
        NodoLista<T>* getSiguiente() {
            return this->siguiente;
        }
    
        /* pre : -
         * post: indica si existe un Nodo Siguiente. 
         */
        bool tieneSiguiente() {
		return(this->siguiente!=NULL);            
	}
};

#endif

